#include <stdio.h>
#define LEN 150

void mul(int[], int[], int[]);
void print(int[], int);

int main()
{
    char str[LEN];
    int a[LEN], b[LEN], c[LEN];
    int n, i, j, len, pos;

    while (~scanf("%s%d", str, &n)) {
        for (i = 0; i < LEN; i++) {
            a[i] = 0;
            b[i] = 0;
        }
        for (len = 0; str[len] != '\0'; len++) ;
        for (i = 0, j = len - 1; j >= 0; j--) {
            if (str[j] == '.') {
                pos = i*n;
            } else {
                a[i++] = str[j] - '0';
            }
        }
        b[0] = 1;
        while (1) {
            if (n--) {
                mul(a, b, c);
            } else {
                print(b, pos);
                break;
            }
            if (n--) {
                mul(a, c, b);
            } else {
                print(c, pos);
                break;
            }
        }
    }

    return 0;
}

void mul(int a[], int b[], int c[]) {
    int i, j;

    for (i = 0; i < LEN; i++) {
        c[i] = 0;
    }
    for (i = 0; i < LEN; i++) {
        for (j = 0; j < LEN; j++) {
            c[i+j] += a[i] * b[j];
        }
    }
    for (i = 1; i < LEN; i++) {
        c[i] += c[i-1] / 10;
        c[i-1] %= 10;
    }
}

void print(int a[], int pos) {
    char result[LEN];
    int i, j, k, flag;

    result[LEN-1] = '\0';
    flag = 0;
    for (i = 0, j = LEN-1; i < pos && j >= 0; i++) {
        if (a[i]) {
            flag = 1;
        }
        if (flag) {
            result[--j] = a[i] + '0';
        } else {
            result[--j] = '\0';
        }
    }
    if (flag) {
        result[--j] = '.';
    }
    k = j;
    for ( ; i < LEN && j >= 0; i++) {
        result[--j] = a[i] + '0';
        if (a[i]) {
            k = j;
        }
    }

    printf("%s\n", result+k);
}
